package com.ddxz.middleground.master.mapper;

import com.ddxz.middleground.master.entity.PermissionEntity;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

/**
 * interface description
 *
 * @author 朱宗刚
 * @version 1.0.0
 * @date 2020/8/12
 */

@Mapper
@Repository
public interface PermissionMapper {
    /**
     * 按照指定的条件分页检索权限信息
     *
     * @param status  状态
     * @param keyword 关键字
     * @param tenant  租户信息
     * @return 权限清单
     */
    Page<PermissionEntity> permissionSearch(@Param("status") Integer status, @Param("kw") String keyword, @Param("tenant") String tenant);

    /**
     * 根据权限标识，获取权限详情
     *
     * @param permissionId 权限标识
     * @param tenant       租户信息
     * @return 权限详情
     */
    PermissionEntity permissionDetail(@Param("perId") String permissionId, @Param("tenant") String tenant);

    /**
     * 新增权限信息
     *
     * @param entity 权限信息
     * @param tenant 租户信息
     * @return 是否新增成功
     */
    Integer permissionSave(@Param("entity") PermissionEntity entity, @Param("tenant") String tenant);

    /**
     * 修改权限信息
     *
     * @param entity 权限信息
     * @param tenant 租户信息
     * @return 是否修改成功
     */
    Integer permissionModify(@Param("entity") PermissionEntity entity, @Param("tenant") String tenant);

    /**
     * 获取相关名称的权限个数
     *
     * @param name   权限名称
     * @param tenant 租户信息
     * @return 权限个数
     */
    Integer getNumByName(@Param("name") String name, @Param("tenant") String tenant);

    /**
     * 获取相同编码的权限个数
     *
     * @param code   应用编码
     * @param tenant 租户信息
     * @return 权限个数
     */
    Integer getNumByCode(@Param("code") String code, @Param("tenant") String tenant);

    /**
     * 删除指定的权限信息
     *
     * @param permissionId 权限标识
     * @param tenant       租户信息
     * @return 是否删除成功
     */
    Integer removePermission(@Param("perId") String permissionId, @Param("tenant") String tenant);
}
